'use strict';
var _ = require('lodash');
var stringJs = require('@/libs/string');
function ajaxController($scope){
    var text = `    // lodash 全面替换我之前的工具库
        //////////////////////////////////////////////////////////////////////////////
        // 原生string方法
        //////////////////////////////////////////////////////////////////////////////
        var str="HelloWorld!";
        str.slice(3); // output -> 'loWorld!'
        str.slice(5,10); // output -> 'World'
        str.slice(5,3); // output -> 'null'
        str.slice(3,-2); // output -> 'loWorl'
        str.substring(3); // output -> 'loWorld!'
        str.substring(5,10); // output -> 'World'
        str.substring(5,3); // output -> 'lo'
        str.substring(3,-2); // output -> 'Hel'
        str.substring(0,3); // output -> 'Hel'
        str.substr(3); // output -> 'loWorld!'
        str.substr(5,3); // output -> 'Wor'
        str.substr(3,-2); // output -> 'null'
        str.substr(1,3); // output -> 'ell'
        str.toLowerCase(); // output -> 'helloworld'
        str.toUpperCase(); // output -> 'HELLOWORLD'
        //////////////////////////////////////////////////////////////////////////////
        // HTML转义 编码/解码
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.escape(_.escape('fred, barney, & pebbles')),result_flag_here
        _bs(_.unescape('fred, barney, &amp; pebbles'),result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 为正则中的特殊字符转义
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.escapeRegExp('[lodash](https://lodash.com/)'),result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 全角半角替换
        // 返回一个无错值字符串
        // 空格为12288,半角空格为32
        // 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        // =====================
        // liuyp 2019年1月22日19:49:31
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.dbc2Sbc("ａｂｃ１２３") == 'abc123',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 数位补全(2位)
        // @author liuyp
        // @param num {int} 补全的数值 请自觉传入最多两位
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.fillup2Digit(1) == '01',result_flag_here
        _bs(stringJs.fillup2Digit(11) == '11',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // md5加密
        // =====================
        // liuyp 2019年1月22日19:49:31
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.string2md5("chenglong") == '6c3a1874dbabb2d8725914b00e72e38a',result_flag_here
        _bs(stringJs.string2md5("admin") == '21232f297a57a5a743894a0e4a801fc3',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 字符串模板
        // 虽然反斜杠也提供了模板的功能但是没有循环等功能
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.template('hello <%= user %>!')({ 'user': 'fred' }),result_flag_here
        _bs(_.template('<b><%- value %></b>')({ 'value': '<script>' }),result_flag_here
        _bs(_.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>')({ 'users': ['fred', 'barney'] }),result_flag_here
        _bs(_.template('<% print("hello " + user); %>!')({ 'user': 'barney' }),result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 首字母大写
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.upperFirst('fred') == 'Fred',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // camelCase (驼峰式命名)
        // 将“ab-cd”转化为“abCd”
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.camelCase('Foo Bar') == 'fooBar',result_flag_here
        _bs(_.camelCase('--foo-bar--') == 'fooBar',result_flag_here
        _bs(_.camelCase('__FOO_BAR__') == 'fooBar',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 头字母大写
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.capitalize("abcdefg") == 'Abcdefg',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 驼峰化名称
        // 反驼峰化名称
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.humping("ab-kd-efg") == 'abKdEfg',result_flag_here
        _bs(stringJs.antiHumping("abKdEfg") == 'ab-kd-efg',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // kebab-case (短横线分隔式命名)
        // 将“abCd”转化为“ab-cd”
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.kebabCase('Foo Bar') == 'foo-bar',result_flag_here
        _bs(_.kebabCase('fooBar') == 'foo-bar',result_flag_here
        _bs(_.kebabCase('__FOO_BAR__') == 'foo-bar',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 两值切换
        // =====================
        // liuyp 2018年12月20日11:28:08
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.toggle("AA", "AA", "BB") == "BB",result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 打造重复值
        // =====================
        // liuyp 2019年6月9日17:28:26 lodash替换
        //////////////////////////////////////////////////////////////////////////////
        _bs(_.repeat('*', 3) == '***',result_flag_here
        _bs(_.repeat('abc', 2) == 'abcabc',result_flag_here
        _bs(_.repeat('abc', 0) == '',result_flag_here
        //////////////////////////////////////////////////////////////////////////////
        // 剔除html标签
        // =====================
        // liuyp 2018年12月20日11:28:08
        //////////////////////////////////////////////////////////////////////////////
        _bs(stringJs.stripTags("<b>123<b>") == '123',result_flag_here
    `;
    var dotest = function(code){
        try {
            var r = eval("("+code+")");
            if( r !== true && code.indexOf('==') > -1 ){ return '异常 ' + eval("("+ code.replace(/\=\=.*/, '') +")") }
            return r
        } catch(e){
            console.error("单元测试代码错误", e)
            return "UNITTESTERROR"
        } };
    text = text.replace(/\_bs\((.*)\,result\_flag\_here/g,function(a,b,c){
        var result = dotest(b);
        if( result === true ){ result = "UNITTESTOK" }
        return "UNITTESTTEST "+b+" UNITTESTRESULT "+ JSON.stringify(result)
    })
    $("#templateAPI").html(
        text.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n[ ]{4}/g, '\n')
            .replace(/UNITTESTTEST/g, '<font color="#3333ff">测试代码: ')
            .replace(/UNITTESTRESULT/g, '</font><font color="#3333cc">结果</font>')
            .replace(/UNITTESTOK/g, '<span style="color: #4caf50;">单元测试通过</span>')
            .replace(/UNITTESTERROR/g, '<span style="color: #ff3300;">代码错误</span>')
    );
}
exports = module.exports = ajaxController;